Почему тактических пошаговых онлайн-игр так мало в 3D? Заметки разработки Cobalt Gale
Всех приветствую! Решил написать статью о тактических пошаговых играх, сложностях перехода в 3D и почему 2D - их естественная среда обитания (но тоже не без сложностей).
Проблемы и теоретические решения, с которыми я столкнулся в ходе разработки своей игры Cobalt Gale.
Итак, начнём, пожалуй, с самого основного в этой теме - сетка (координаты поля боя). Ни для кого не секрет, что сам жанр "пошаговой" игры должен иметь саму координату. Это же база. И их имеется 2 основных вида - гексы и сетка:
В целом, конечно, вам ничто не мешает экспериментировать и сделать, например, треугольную сетку - если, конечно, концепция проекта позволяет это реализовать и подчеркнуть такой выбор
В любом случае сама сетка должна не только выглядеть удобно, но и иметь координату (в этом же её смысл), пусть хоть в шахматном виде A4 или в числовом 1/4 - не суть.
Как я упоминал в одном из своих постов (ссылка), я экспериментировал в своём проекте с изометрией (триметрией) в 2D и переездом с пошаговой системой в полноценное 3D.
И тут, на самом деле, всё гораздо интересней, чем может показаться...
Все вы замечали в подобных играх объекты в виде препятствий, и, что забавно, их расположение иногда могло показаться странным. Дело в том, что, наверное, я скажу примитивно - но объекты должны соответствовать по размерам именно сетке.
Если ваше препятствие, например, полторы клетки - то это большая ошибка. Объект должен занимать то количество клеток, где он визуально находится, то есть в нашем случае либо полную одну клетку, либо 2 клетки. На своём проекте я могу наглядно показать так:
Обратите внимание: выпирающий красный (и зеленый) гекс - недоступен для игрока, а значит, на серверном расчёте этот гекс полноценно является препятствием для траектории полёта пули
Тут важно понимать - для онлайн-игры сервер обязан быть авторитарным (передавать расчёт луча пули с клиента нельзя, иначе читы неизбежны). А сам сервер 3D-моделей не видит - для него существует только матрица координат и булево значение: занят гекс или нет (в моём случае структура с булевым и переменной названия объекта, чтобы отличать уничтожаемый и простреливаемый объект от других видов).
То есть, несмотря на то, что для клиента (и пользователя) это выглядит вот так:
Для сервера холодный расчёт происходит так:
И получается такой забавный нюанс:
И если в квадратной сетке может показаться, почему всё квадратное из объектов, которые занимают клетку - вот она, истинная причина.
В 2D и в чистой изометрии 3D - ситуация та же самая, только она не столь заметна, сама фиксация камеры на карту это немного сглаживает, а в 2D это ещё более простительно выглядит.
И что тут можно сделать, чтобы не переходить в полноценную 3D-систему координат, от которой сервер начнёт гудеть?
Чисто теоретически я пришёл к такому заключению, что одной плоскости сетки не хватает, поэтому должен быть второй слой сетки, но более мелкий.
Тут я нашёл два варианта решения...
Первый вариант: сделать вторую сетку которая будет в виде слоёв. Но проблема такого метода - корректно связать первый слой (где персонаж шагает) и второй слой, где отмечены мелкие детали - очень сложный, точнее в процессе отладки могут появиться разные проблемы того же смещения, правильного учета дробления мелкой сетки на корневые и прочее, можно, но зачем?
Второй вариант, который мне показался достаточно хорошим решением - создать массив в самой клетке, массив, который содержит ещё одни координаты и их занятость, примерно вот так:
Можно придумать различные извращения. Красным выделено - закрытая область. Остальная - простреливаемая.
Представьте, казалось бы, визуально мелочь - а хлопот доставляет прилично, но хочу отметить, таких нюансов в тактической пошаговой игре в 3D - прилично, хитростей приходится придумывать достаточно)
А по результату, пуля у нас теперь летит спокойно, не смотря на то что есть и граница объекта, и пустая зона:
В синглплеерных играх это, конечно, всё решается расчётом луча траектории пули через объекты - и там такие проблемы обходятся дешевле.
Надеюсь, статья была занятной)
Если интересен сам проект, добро пожаловать в телегу. Так же есть отдельный сайт
Всем добра и успехов в своих проектах!












![Найти браузерный онлайн игру о выживании [ОК]](https://cs2.pikabu.ru/s/2026/11/10/11/khb4nnra.jpg)







